home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-07-15 | 20.8 KB | 398 lines | [TEXT/GEOL] |
- Apple II
- Technical Notes
- _____________________________________________________________________________
- Developer Technical Support
- ProDOS 8
- #23: ProDOS 8 Changes and Minutia
-
- Revised by: Matt Deatherage May 1992
- Written by: Matt Deatherage July 1989
-
- This Technical Note documents the change history of ProDOS 8 through V2.0.1,
- and it supersedes the information on this topic in the ProDOS 8 Technical
- Reference Manual and the ProDOS 8 Update.
-
- CHANGES SINCE SEPTEMBER 1990: Updated to include ProDOS 8 version 2.0.1 and
- its known bugs. Replaced APDA references with Resource Central .
- _____________________________________________________________________________
-
-
- CHANGES? YOU'RE KIDDING.
-
- No. One of the side effects of evolving technology is that eventually little
- things (like the disk operating system) have to change to support the new
- technologies. Every time Apple changes ProDOS 8, the manuals can't be
- reprinted. For one thing, it takes a long time to turn out a manual, by which
- time there's often a new version done which the new manual doesn't cover. For
- another thing, programmers and developers don't tend to purchase revised
- manuals (our informal research shows that more people have up-to-date Apple
- /// RPS documentation than have up-to-date Apple IIc documentation--and this
- was done before the Apple IIc Plus was released...).
-
- So this Note explains what has changed between ProDOS 8 V1.0 and the current
- release, V2.0.1, which began shipping with Apple IIgs System Software 6.0.
- Table 1 shows what versions of ProDOS 8 existing documentation covers.
-
- Version
- Document Number
- ------------------------------------------------------------
- ProDOS 8 Technical Reference Manual 1.1.1
- ProDOS 8 Update 1.4
- AppleShare Programmer's Guide to the Apple IIgs 1.5
- ------------------------------------------------------------
- Table 1-ProDOS 8 Documentation
-
- PRODOS 1.0
-
- This was the first release of ProDOS, which was so unique it didn't even have
- to be called ProDOS 8 to distinguish it from ProDOS 16. If you have
- documentation that predates ProDOS 1.0, you should seek professional help from
- Resource Central at the address listed in Technical Note #0.
- ProDOS 1.0.1
-
- o Fixed a bug in the STATUS call which affected testing for the
- write-protected condition.
-
- ProDOS 1.0.2
-
- o Changed instructions used in interrupt entry routines on the global
- page so the accumulator would not be destroyed.
- o Fixed a bug in the Disk II core routines so the motor would shut off
- after recalibration on an error.
-
- ProDOS 1.1
-
- o Changed the internal MLI layout for future expansibility and
- maintenance.
- o Modified machine ID routines to identify IIc and enhanced IIe ROMs.
- o Removed code that allowed ProDOS to boot on 48K machines.
- o Removed the check for the ProDOS version number from the OPEN routine.
- o Incremented KVERSION (the ProDOS Kernel version) on the global page.
- o Modified the loader routines to reflect the presence of any 80-column
- card following the established protocol (see ProDOS 8 Technical Note
- #15, How ProDOS 8 Treats Slot 3). Also, at this time, added code to
- allow slot 3 to be enabled on a IIe if an 80-column card following the
- protocol was found.
- o Added code to turn off all disk motor phases prior to seeking a track
- in the Disk II driver.
- o Fixed a bug to prevent accesses to /RAM after it had been removed from
- the device list.
- o Reduced the size of the /RAM device by one block to protect interrupt
- vectors in the auxiliary language card. The correct vectors are
- installed at boot time.
-
-
- PRODOS 1.1.1
-
- o Fixed a Disk II driver bug for mapping into drive 1.
- o Modified machine ID routines to give precedence to identifiable
- 80-column cards in slot 3.
-
- PRODOS 8 1.2
-
- o Changed the name from ProDOS to ProDOS 8 to avoid confusion with
- ProDOS 16, which, again, this Note does not discuss.
- o Introduced the clock driver for the Apple IIgs. The machine
- identification code was changed to indicate the presence of the clock
- on the IIgs.
- o Added preliminary network support by adding the network call and
- preliminary network driver space.
- o Fixed a bug in returning errors from calls to the RAM disk. Changed
- the RAM disk driver to return values of zero on reads and ignore
- writes to blocks zero, one, four, five, six, and seven, which are not
- accessible as storage in the driver's design.
- o Added a new system error ($C) for errors when deallocating blocks from
- a tree file.
- o Fixed a bug in zeroing a Volume Control Block (VCB) when trying to
- reallocate a previously used VCB.
- o Modified the ProDOS 8 loader code to automatically install up to four
- drives in slot 5 if a SmartPort device is found. Removed the code to
- always leave interrupts disabled, which leaves the state of the
- interrupt flag at boot time unchanged while ProDOS 8 loads.
- o Changed the MLI entry to disable interrupts until after the MLIACTV
- flag is set and other ProDOS parameters are initialized.
- o Modified the QUIT code to allow the Delete key to function the same as
- the left arrow key. Also fixed a bug so screen holes would not be
- trashed in 80-column mode. Crunched code to allow soft switch
- accesses to force 40-column text mode. Fixed a bug so the dispatcher
- would not trash the screen when executed with a NIL prefix.
- o Modified the ONLINE call so that it could be made to a device that had
- just been removed from the device list by the standard protocol.
- Previous to this change, a VCB for the removed device was left,
- reducing the number of on-line volumes by one for each such device.
- From this point on, removing a device should be followed by an ONLINE
- call to the device just removed. The call returns error $28 (No
- Device Connected), but deallocates the VCB.
- o Added a spurious interrupt handler to allow up to 255 unclaimed
- interrupts before system death.
- o Removed the code which invoked low-resolution graphics on system
- death--it had not worked well and the space was needed. The system
- had previously had the ability to display "INSERT SYSTEM DISK AND
- RESTART" without also displaying "-ERR xx", which was removed at this
- point for space reasons since the system wasn't using it (and
- hopefully you weren't, either, since it wasn't documented).
- o Changed MLIACTV to use an ASL instead of an LSR to turn "off" the
- flag.
- o Changed the OPEN call to correctly return error $4B (Unsupported
- Storage Type) instead of error $4A (incompatible file format for this
- version) when attempting to open a file with an unrecognized storage
- type.
- o Fixed an obscure bug involving READ in Newline mode. If the requested
- number of bytes was greater than $FF, and the number of bytes in the
- file after the newline character was read was a multiple of $100, then
- the number of bytes reported transferred by ProDOS was equal to the
- correct number of transferred bytes plus $100.
- o Starting with V1.2 on an Apple IIgs, stopped switching slot 3 ROM
- space and left the determination of whether the slot or the port was
- enabled to the Control Panel; however, there was a bug in this
- implementation which was fixed in V1.7 and described in ProDOS 8
- Technical Note #15, How ProDOS 8 Treats Slot 3.
- o Updated the slot-based clock driver's year table through 1991.
- o Added a feature which allows ProDOS 8 to search for a file named
- ATINIT in the boot volume's root directory, to load and execute it,
- then to proceed normally with the boot process by loading the first
- .SYSTEM file. No error occurs if the ATINIT file is not found, but
- any other error condition (including the file existing and not having
- file type $E2) causes a fatal error.
- o Changed loader code so ProDOS 8 could be loaded by ProDOS 16 without
- automatically executing the ATINIT and the first .SYSTEM file.
- o Changed the device search process in the ProDOS 8 loader so SmartPort
- devices are only installed if they actually exist, and Disk IIs are
- placed with lowest priority in the device list so they are scanned
- last.
- o Forced Super Hi-Res off on an Apple IIgs when a fatal error occurs.
- (Actually, this did not work, but it was fixed in V1.7.)
- o Inserted a patch to fix a bug in the first IIgs ROM that caused
- internal $Cn00 ROM space to be left mapped in if SmartPort failed to
- boot.
-
- PRODOS 8 1.3
-
- WARNING : This is not a stable version of ProDOS due to an illegal 65C02
- instruction which was added. This version can damage disks if
- used with a 6502 processor.
-
- o Changed the code that resets phase lines for Disk IIs so phase
- clearing is done with a load instead of a store, since stores to even
- numbered locations cause bus contention, which is major uncool.
- Changed the routine to force access to all eight even locations, which
- not only clears the phases, but also forces read mode, first drive,
- and motor off. DOS used to do this; ProDOS had not been doing it. If
- L7 had been left on when the Disk II driver was called and it checked
- write-protect with L6 high, write mode was enabled. Forcing read mode
- leaves less to chance.
- o Changed deallocation of index blocks so index blocks are not zeroed,
- allowing the use of file recovery utilities. Instead, index blocks
- are "flipped" (the first 256 bytes are exchanged with the last 256
- bytes).
- o Since the UniDisk 3.5 interface card for the ][+ and IIe does not set
- up its device chain unless a ProDOS call is made to it, ProDOS STATUS
- calls are now made to the device before SmartPort STATUS calls.
-
- PRODOS 8 1.4
-
- o Removed an illegal 65C02 instruction which was added in V1.3.
- o Modified the Disk II driver so a routine that should only clear the
- phase lines only clears the phase lines. Also clear Q7 to prevent
- inadvertent writes.
-
-
- WARNING : The AppleTalk command, which was added in version 1.5, is present
- as a skeleton in this version. Unfortunately, it's not a useful
- skeleton. It moves a section of memory from a ProDOS location to
- another location and transfers control, totally oblivious of the
- fact that there is no code at this address.
-
- Even more unfortunate, the server software that ships with the
- Apple IIe Workstation Card is such that when the IIe is booted over
- the network with that server software, it is version 1.4
- (KVERSION = 4).
-
- So if you boot version 1.4 from a local disk, making a $42 call is
- fatal. See ProDOS 8 Technical Note #21, Identifying ProDOS
- Devices, for a reliable way to identify AppleTalk volumes under
- ProDOS 8 version 1.4.
-
- PRODOS 8 1.5
-
- o ProDOS 8 1.5 is the first version to include network support through
- the ProDOS Filing Interface (PFI) as part of ProDOS 16 or on the Apple
- IIe Workstation Card without booting over the server (see the warning
- under version 1.4). Made many changes to internal routines for PFI
- location and compatibility at this point. Crunched and moved code for
- PFI booting and accessibility.
- o Changed some strings to all uppercase internally for string
- comparisons.
- o Removed the generic $42 AppleTalk call (the cause of the previous
- warning) which was introduced in V1.2, as PFI gets called through the
- global page.
- o Changed the ASL to clear the MLIACTV flag back to an LSR. This
- doesn't make nested levels of busy states possible, but always clears
- the flag before calling interrupt handling routines that check MLIACTV
- as described in the ProDOS 8 Technical Reference Manual.
- o If an Escape key is detected in the keyboard buffer on an Apple IIc,
- it is removed. This is friendly to the Apple IIc Plus, the ROM of
- which does not remove the Escape key it uses to detect that the system
- should be booted at normal speed.
-
- PRODOS 8 1.6
-
- o Set up a parallel pointer to correct a PFI misinterpretation of an
- internal MLI pointer.
-
- PRODOS 8 1.7
-
- o Made a change to ensure that ProDOS 8 counts the volume's bitmap
- before incrementing the number of free blocks. This fixed a bug where
- an uninitialized location was being incremented and decremented,
- incorrectly reporting a Disk Full error where none should have
- occurred.
- o Changed the handling of slot 3 ROM space to that described in ProDOS 8
- Technical Note #15, How ProDOS 8 Treats Slot 3.
- o Changed code to permit the invisible bit of the access byte (bit 2) to
- be set by applications.
-
- PRODOS 8 1.8
-
- o Fixed a bug introduced in V1.3. If an error occurs while calling
- DESTROY on a file, the file is not deleted but the index blocks are
- not swapped back to normal position. If a subsequent DESTROY of the
- same file succeeds, the volume's integrity is destroyed. Now ProDOS 8
- marks the file as deleted, even if an error occurs, so any other
- errors do not cause a subsequent MLI call to trash the volume. Note
- that "undelete" utilities attempting to undelete such a file (one in
- which an error occurred during the DESTROY ) may trash the volume.
- o Fixed the ONLINE call to ignore the unused low nibble of the unit_num
- parameter when deciding how many bytes to zero in the application's
- buffer. This change fixes a bug which zeroed only the first 16 bytes
- of the caller's buffer before filling them if an ONLINE call was made
- with a unit_num of $0X, where X is non-zero.
- o When loading on an Apple IIgs, ProDOS 8 now sets the video mode so the
- 80-column firmware is not active when the ProDOS 8 application gets
- control.
- o Changed internal version checking between GS/OS and ProDOS 8. Note
- that GS/OS and ProDOS 8 are still tied to each other--versions that
- didn't come on the same disk can't be used together. The methods for
- checking versions were just altered.
- o Made the backward compatibility check when opening subdirectories
- inactive. The test would always fail when opening a subdirectory with
- lowercase characters in the name (as assigned by the ProDOS FST under
- GS/OS), so the check was removed. Note that using earlier versions of
- ProDOS 8 with such disks causes errors when trying to access files
- with such directories in their pathnames.
- o Expanded the ProDOS 8 loader code to provide for more room for future
- compatibility.
- o On a IIgs, installs a patch into the GS/OS stack-based call vector so
- that anyone calling GS/OS routines (like QDStartUp in ROM 03, for
- example) gets an appropriate error instead of performing a JSL into
- the stratosphere.
-
- PRODOS 8 1.9
-
- o New selector and dispatcher code was added for machines with 80
- columns. The old code is still present for machines without 80-column
- capability.
- o Fixed two bugs involved in booting into a ".SYSTEM" program larger
- than 38K. First, ProDOS 8 should be able to boot into a program as
- large as 39.75K, but was returning an error if the ".SYSTEM" program
- was larger than 38K. Second, when attempting to print the message
- "*** SYSTEM PROGRAM TOO LARGE ***", only one asterisk was printed.
- Both these bugs are fixed.
- o No longer requires a ".SYSTEM" file when booting. If ProDOS 8 does
- not find a ".SYSTEM" file and the enhanced selector and dispatcher
- code is installed, ProDOS 8 executes a QUIT call.
- o KVERSION is still $08.
-
-
-
- PRODOS 8 V2.0.1
-
- o ProDOS 8 now supports more than two SmartPort devices per slot by
- remapping the third device and beyond to different slots. There's
- still a limit of 14 devices altogether, though.
- o ProDOS 8 version 2.0.1 and later require a 65C02 microprocessor or
- equivalent; you get RELOCATION/CONFIGURATION ERROR if you don't have
- one. ProDOS 8 tests for a 65C02 by setting binary-coded decimal (BCD)
- mode and adding $01 to $99, which is the largest negative BCD value
- representable in an 8-bit register. 65C02 microprocessors correctly
- clear the N flag when the addition wraps to zero; 6502 microprocessors
- do not.
-
- Since all of Apple's 65C02 or greater computers also have lower-case
- capability, the ProDOS 8 splash screen now uses lower-case letters.
- After only nine years, too.
-
- o The file's been rearranged again, so if you have a program that
- patches the P8 file, it probably breaks now. Please learn your lesson
- and write a .SYSTEM program that patches ProDOS 8 in memory and not on
- disk.
- o The prefix is now set correctly when launching Applesoft programs.
- o Old never-used code to handle call $42 is now gone.
- o Removed some RAM-disk code that was not used.
- o ProDOS 8 now sets the prefix to empty when you try to set the prefix
- to "/".
- o The Apple IIgs clock driver inside ProDOS 8 now limits the year to the
- range 00 through 99.
- o Sparse seedling files are now truncated properly.
- o When filling up a volume with a WRITE call, ProDOS 8 used to return
- the disk full error but leave the file's mark set past the file's EOF.
- This is now fixed.
- o If you try to mount a new volume but all eight VCB slots are filled,
- ProDOS 8 now tries to kick out the first volume in the table with no
- open files. If all volumes have open files, you'll still get error
- $55.
- o The new quit code (introduced with 1.9) now beeps and lets the user
- try another subdirectory if the one they chose can't be opened.
- Previously it went forward to the next volume.
- o The new quit code also now closes a directory if it gets a ProDOS
- error in the directory read loop.
- o When synthesizing a directory entry for a volume, ProDOS 8 always used
- to assume the directory was four blocks long (for 51 files). The /RAM
- disk's directory is shorter than this (one block), and ProDOS 8 no
- longer returns funky errors when trying to read past the end of this
- shortened directory. The EOF and blocks used are now returned as $200
- and 1, respectively.
- o The system death messages are now displayed in the center of the
- 40-column screen, bordered by inverse spaces. This is an improvement
- over the line of garbage showing at the bottom of the screen since
- approximately version 1.5.
- o The new quit code was rearranged to clear the screen prior to loading
- the selected application. This insures that MSLOT ($07F8) points to
- the "boot" slot prior to starting the application. In this way, you
- can launch the ProDOS file from GS/OS to start up GS/OS. (Note that
- MSLOT must be set properly for this to work.)
- o If the device search code at start time finds a SCSI SmartPort, a
- SmartPort status call is issued to device #2. This lets the Apple II
- High-Speed SCSI card build its device tables and return the true
- number of devices connected. Without this, it always returns "4" for
- slot 5 or "2" for any other slot.
- o KVERSION is now $21.
-
-
- KNOWN PRODOS 8 V2.0.1 BUGS
-
- o ProDOS 8 still doesn't behave perfectly when 14 or more devices are
- present. Specifically, the /RAM driver tends to install itself
- without checking to see whether or not there's room in the device
- table.
-
- CAUTION : ProDOS 8's remapping of SmartPort devices may interfere with
- intelligent SmartPort peripherals that were already doing
- their own remapping. ProDOS 8 remaps additional SmartPort
- devices, even if the SmartPort firmware already did this on
- its own, and this can cause problems. We never said this
- would work, but we never said it wouldn't--ProDOS 8 has no way
- to determine what remapping has already been done. If you
- make such a card and your customers have problems, tell them
- to disable your SmartPort remapping and let ProDOS 8 do it
- all.
-
-
- Further Reference
- _____________________________________________________________________________
-
- o ProDOS 8 Technical Reference Manual
- o ProDOS 8 Updat
- o AppleShare Programmer's Guide to the Apple II
- o ProDOS 8 Technical Note #21, Identifying ProDOS Devices
-